/*
  (C) 2005 Adam D. Bradley

  This program is free software; you can redistribute it and/or
  modify it under the terms of Version 2 of the GNU General Public 
  License.
  
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  General Public License for more details.
  
  You should have received a copy of the GNU Library General Public
  License along with this library; if not, write to the Free
  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/*
  Implements worker threads for non-blocking HTTP operations
*/

package http;

import http.Request;
import snobject.snObject;

public class Worker extends Thread
{
	private Request request;
	private snObject value;
	private http.Status failure;

	public Worker(Request r) { request = r; value = null; }
	public void run() {
		try {
			value = http.Client.implementation(request);
		} catch (java.io.IOException ex) {
			failure = http.Status.InternalClientError(
				ex.getMessage());
			return;
		} catch (http.Status ex) {
			failure = ex;
			return;
		}
		return;
	}

	public snObject Value() {
		assert(!isAlive());
		return value;
	}
	public http.Status Exception() {
		assert(!isAlive());
		return failure;
	}
}